﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using OBL1_DiseñoDeAplicaciones.ObjetosDeNegocio;
using OBL1_DiseñoDeAplicaciones.Utilidades;

namespace OBL1_DiseñoDeAplicaciones.Interfaz
{
    public partial class Cliente_Listado : Form, IObservador
    {
        private const string modoOperativoAgregar="Agregar";
        private const string modoOperativoModificar="Modificar";

        private Empresa empresa;       

        public Cliente_Listado()
        {
            InitializeComponent();
            empresa = Empresa.GetInstance();
            CargarGrilla();
        }

        private void CargarGrilla()
        {
            this.dGVClientes.AutoGenerateColumns = false;
            this.dGVClientes.DataSource = null;
            this.dGVClientes.DataSource = empresa.Clientes;
        }

        private void btnNuevoCliente_Click(object sender, EventArgs e)
        {
            Cliente_AltaModificacion ventana = new Cliente_AltaModificacion(modoOperativoAgregar, null,this);
            ventana.ShowDialog();
        }

        private void BtnCerrarListadoCliente_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        public void actualizar()
        {
            CargarGrilla();
        }

        private void dGVClientes_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
        {
            //celda seleccionada
            DataGridViewCell celdaSelect = dGVClientes.CurrentCell;
            //fila seleccionada
            DataGridViewRow filaSelect = dGVClientes.CurrentRow;
            //celda seleccionada
            DataGridViewCell celdaId = dGVClientes.Rows[filaSelect.Index].Cells[1];
            //identificador del cliente seleccionado
            string _ruc = celdaId.Value.ToString();
            int indiceCeldaSelect = celdaSelect.ColumnIndex;

            switch (indiceCeldaSelect)
            {
                //si celda seleccionada es 3 -> Modificar
                case 3:
                    Cliente cli = (from Cliente c in empresa.Clientes where c.Ruc == _ruc select c).First();
                    Cliente_AltaModificacion ventana;
                    ventana = new Cliente_AltaModificacion(modoOperativoModificar, cli, this);
                    ventana.Show();
                    break;

            }       
        }
       
    }
}
